/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package utils;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Administrateur
 */
public class clsUtilisateur {
    private Connexion _connexion;

    public clsUtilisateur() throws ClassNotFoundException, SQLException
    {
        this._connexion = new Connexion();
    }

    public ResultSet authentification(String login, String psw) throws ClassNotFoundException, SQLException
    {
        String query = "select typeUtilisateur from utilisateur" +
                " where loginUtilisateur='"+login+"' and passwordUtilisateur='"+psw+"' and typeUtilisateur='utilisateur' or" +
                " typeUtilisateur='admin'";
        this._connexion.setQuery(query);
        ResultSet resultat = this._connexion.getResultSet();
        return resultat;
    }

    public TableModel getListUtilisateur() throws SQLException
    {
         String query = "select idUtilisateur,loginUtilisateur,typeUtilisateur from utilisateur where typeUtilisateur='utilisateur' or typeUtilisateur='administrateur'";
         String[] titre = {"ID","login","type"};
         TableModel model = new TableModel(this._connexion,query,titre);
        return model;
    }

    public TableModel getListUtilisateurByLogin(String login) throws SQLException
    {
         String query = "select idUtilisateur,loginUtilisateur,typeUtilisateur from utilisateur "
                 + " where loginUtilisateur='"+login+"' and typeUtilisateur='utilisateur'";
         String[] titre = {"ID","login","type"};
         TableModel model = new TableModel(this._connexion,query,titre);
         return model;
    }

    public boolean testExistingUser(String login) throws SQLException
    {
        String query = "select * from utilisateur where loginUtilisateur='"+login+"'";
        this._connexion.setQuery(query);
        ResultSet resultat = this._connexion.getResultSet();
        if (resultat.next())
        {
            return true;
        }else{
            return false;
        }
    }

    public String getId(String login) throws SQLException
    {
        String query = "select idUtilisateur from utilisateur where loginUtilisateur='"+login+"'";
         this._connexion.setQuery(query);
         ResultSet resultat = this._connexion.getResultSet();
         String id = null;
	 while(resultat.next())
         {
             id = resultat.getString("idUtilisateur");
             break;
         }
        return id;
    }

    public String getLogin(String id) throws SQLException
    {
         String query = "select loginUtilisateur from utilisateur" +
                " where idUtilisateur='"+id+"'";
         this._connexion.setQuery(query);
         ResultSet resultat = this._connexion.getResultSet();
         String login = null;
	 while(resultat.next())
         {
             login = resultat.getString("loginUtilisateur");
             break;
         }
        return login;
    }

    public void creatingUser(String login, String pass, String type) throws SQLException
    {
        String query = "insert into utilisateur (loginUtilisateur,passwordUtilisateur,typeUtilisateur) "
                + " values('"+login+"','"+pass+"','"+type+"')";
        this._connexion.setUpdate(query);
    }

    public void updateUser(String mdp,String id) throws SQLException
    {
        String query = "update utilisateur set passwordUtilisateur='"+mdp+"' where idUtilisateur="+id;
        this._connexion.setUpdate(query);
    }

    public String generatePassword(int length)
    {
        String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
	String pass = "";
	for(int x=0;x<length;x++)
        {
            int i = (int)Math.floor(Math.random() * chars.length() -1);
	    pass += chars.charAt(i);
	}
	return pass;
    }

    public String createLoginCandidat(String nom, String prenom, String adresse, String cp) throws SQLException
    {
        String query = "select idCandidat from candidat where nomCandidat='"+nom+"' and prenomCandidat='"+prenom+"'"
                + " and adresseCandidat='"+adresse+"' and cpCandidat='"+cp+"'";
        this._connexion.setQuery(query);
        ResultSet resultat = this._connexion.getResultSet();
        String id = null;
        while(resultat.next())
         {
             id = resultat.getString("idCandidat");
             break;
         }
        return id+nom;
    }

    public String createLoginEntreprise(String nom, String adresse, String cp) throws SQLException
    {
        String query = "select idEntreprise from entreprise where nomEntreprise='"+nom+"' and adresseEntreprise='"+adresse+"' and cpEntreprise='"+cp+"'";
        this._connexion.setQuery(query);
        ResultSet resultat = this._connexion.getResultSet();
        String id = null;
        while(resultat.next())
         {
             id = resultat.getString("idEntreprise");
             break;
         }
        return id+nom;
    }
}
